<?php

namespace App\Http\Controllers\Mobile;

use App\Logics\AccountLogic;
use App\Service\CNNickname;

class AccountController extends BaseController
{
    // 个人账户

    // 初始化
    public function initialize()
    {
        parent::initialize();
    }

    // 小程序登录（如果没有注册 则自动注册）
    // 小程序获取openID（如果已经存在，则自动登录，如果不存在，在登录的时候在输入手机号重新注册）
    public function wxcodeLogin()
    {
        $logic = new AccountLogic();
        $rst   = $logic->miniLoginWxCode();
        if($rst === false){
            return $this->error($logic->getError());
        }

        return $this->success($rst);
    }

    // 小程序登录（如果没有注册 则自动注册）
    // 小程序获取openID（如果已经存在，则自动登录，如果不存在，在登录的时候在输入手机号重新注册）
    public function miniLogin()
    {
        $logic = new AccountLogic();
        $rst   = $logic->miniRegister();
        if($rst === false){
            return $this->error($logic->getError());
        }

        return $this->success($rst);
    }

    // openID登录（如果已经存在，则自动登录）
    public function openidLogin()
    {
        $logic = new AccountLogic();
        $rst   = $logic->openidLogin();
        if($rst === false){
            return $this->error($logic->getError());
        }

        return $this->success($rst);
    }


    // 登录方式：手机号登录（只登录 没有也不注册）（pc端使用：手机号+密码+验证码）
    public function mobile()
    {
        $logic = new AccountLogic();
        $rst   = $logic->mobileLogin();
        if($rst === false){
            return $this->error($logic->getError());
        }

        return $this->success($rst);
    }


    // 获取小程序 openid
    public function miniOpenid()
    {
        $logic = new AccountLogic();
        $rst   = $logic->getMiniOpenid();
        if($rst === false){
            return $this->error($logic->getError());
        }

        return $this->success($rst);
    }


    // 使用加密登录
    public function decodeLogin()
    {
        $logic = new AccountLogic();
        $rst   = $logic->decodeLogin();
        if($rst === false){
            return $this->error($logic->getError());
        }

        return $this->success($rst);
    }

    // 解密微信小程序性信息
    public function decodeMini()
    {
        $logic = new AccountLogic();
        $rst   = $logic->miniDecode();
        if($rst === false){
            return $this->error($logic->getError());
        }

        return $this->success($rst);
    }


    // 解密微信小程序性信息：测试
    public function decodeMiniTest()
    {
        $logic = new AccountLogic();
        $rst   = $logic->miniDecodeTest();
        if($rst === false){
            return $this->error($logic->getError());
        }

        return $this->success($rst);
    }

    // 解密微信小程序性信息
    public function userMini()
    {
        $logic = new AccountLogic();
        $rst   = $logic->getMiniPhone();
        if($rst === false){
            return $this->error($logic->getError());
        }

        return $this->success($rst);
    }


    // 生成token
    public function token()
    {
        $logic = new AccountLogic();
        $rst   = $logic->token();
        if($rst === false){
            return $this->error($logic->getError());
        }

        return $this->success($rst);
    }

    // 退出
    public function logout()
    {
        return $this->success();
    }

    ####################################################################################

    // 微信公众号登录
    /*public function openid()
    {
        $logic = new AccountLogic();
        $rst   = $logic->openidLogin();
        if($rst === false){
            return $this->error($logic->getError());
        }

        return $this->success($rst);
    }*/


    // app或公众号获取openID（如果已经存在，则自动登录，如果不存在，在登录的时候在输入手机号重新注册）
    /*public function wx()
    {
        $logic = new AccountLogic();
        $rst   = $logic->wxLogin();
        if($rst === false){
            return $this->error($logic->getError());
        }

        return $this->success($rst);
    }*/

    // 随机生成昵称
    public function nick()
    {
        //$faker = \Faker\Factory::create('zh_CN');
        //echo $randomNickname = $faker->userName();
        $nickname = (new CNNickname())->make();

        return $this->success($nickname, '获取随机昵称成功！');
    }

}


